/**
 * test_helper.js
 * 测试辅助模块，提供测试环境和模拟功能
 */

// 测试模式配置
let _debugModeEnabled = false;
let _currentRole = null;

/**
 * 测试辅助模块
 */
const TestHelper = {
  /**
   * 是否启用测试模式
   */
  isDebugModeEnabled: function() {
    return _debugModeEnabled;
  },
  
  /**
   * 设置测试模式
   * @param {Boolean} enabled 是否启用
   */
  setDebugMode: function(enabled) {
    _debugModeEnabled = !!enabled;
    console.log(`测试模式已${enabled ? '启用' : '禁用'}`);
    return _debugModeEnabled;
  },
  
  /**
   * 获取当前模拟角色
   * @returns {String} 角色ID
   */
  getCurrentRole: function() {
    return _currentRole;
  },
  
  /**
   * 设置当前模拟角色
   * @param {String} roleId 角色ID
   */
  setCurrentRole: function(roleId) {
    const oldRole = _currentRole;
    _currentRole = roleId;
    console.log(`角色模拟已更改: ${oldRole || '无'} -> ${roleId || '无'}`);
    return _currentRole;
  },
  
  /**
   * 检查是否有特定角色
   * @param {String|Array} roleIds 角色ID或数组
   * @returns {Boolean} 是否有该角色
   */
  hasRole: function(roleIds) {
    if (!_currentRole) return false;
    
    if (Array.isArray(roleIds)) {
      return roleIds.includes(_currentRole);
    }
    
    return _currentRole === roleIds;
  },
  
  /**
   * 检查是否有任一角色
   * @param {Array} roleIds 角色ID数组
   * @returns {Boolean} 是否有任一角色
   */
  hasAnyRole: function(roleIds) {
    return this.hasRole(roleIds);
  },
  
  /**
   * 关闭测试模式
   */
  disableTestMode: function() {
    _debugModeEnabled = false;
    _currentRole = null;
    console.log('测试模式已完全关闭');
  }
};

module.exports = TestHelper; 